Entonces, según algunos artículos y algunos ejemplos que he visto, al pasar un contexto variable a javascript, uno usaría algo como:
const variable_name = {{ variable | safe }}He intentado buscar en Google pero no parece encontrar ninguna respuesta. ¿Cuál es el uso de "seguro" aquí? ¿Y cuándo lo usamos? Si tiene alguna referencia o artículos a los que pueda referirme, eso sería extremadamente útil. ¡Muchas gracias!
La caja fuerte del filtro indica que la variable no requiere escape.
De forma predeterminada, Django evitará todos los caracteres 'potencialmente inseguros', como los tokens HTML, por ejemplo, al representar una variable en un HTML.
Por ejemplo, si tiene la variable var1 = "<b>Hello</b>" , entonces escribe esto:
{{ var1 | safe }}Representa a este HTML:
<b>Hello</b>Mientras esto:
{{ var1 }}Rinde a esto:
%3Cb%3EHello%3C%2Fb%3E Entonces, en el resultado final, en el primer caso verás el mundo Hello en negrita, mientras que en el segundo ejemplo verás solo la cadena <b>Hello</b> .
El escape se realiza de forma predeterminada principalmente para evitar el ataque XSS en el que el atacante puede ejecutar código malicioso al pasar, por ejemplo, un token <script> dentro de una entrada a un sitio web.
Entonces, como regla general, puede usar el filtro 'seguro' cuando esté seguro de que su cadena no tiene etiquetas inseguras, por ejemplo, si generó esta variable sin basarla en ninguna entrada del usuario.
Para obtener más información, puede consultar los documentos oficiales: https://docs.djangoproject.com/en/3.2/ref/templates/builtins/#std:templatefilter-safe
También puede leer sobre ataques XSS, realmente hay mucha información sobre esto, solo busque en Google.